home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / fn32_3.zip / XSTAT.H < prev    next >
C/C++ Source or Header  |  1993-02-07  |  3KB  |  111 lines

  1. /* xstat.h    Copyright (C) Norman D. Culver 1992  All rights reserved */
  2.  
  3. #ifndef    __XSTAT_
  4. #define    __XSTAT_
  5.  
  6.  
  7. /* UNIX STYLE MODE BITS */
  8. #ifndef __MODEBITS__
  9. #define __MODEBITS__
  10.  
  11.  
  12. #define _S_IRWXU    0000700
  13. #define _S_IRUSR    0000400
  14. #define _S_IWUSR    0000200
  15. #define _S_IXUSR    0000100
  16.  
  17. #define _S_IREAD    _S_IRUSR
  18. #define _S_IWRITE    _S_IWUSR
  19. #define _S_IEXEC    _S_IXUSR
  20.  
  21. #define _S_ISUID    0004000
  22. #define _S_ISGID    0002000
  23. #define    _S_ISVTX    0001000
  24.  
  25. #define    _S_IFMT        0170000
  26. #define _SS_ISDIR    0040000
  27. #define _S_IFDIR    0040000
  28. #define _SS_ISCHR    0020000
  29. #define    _S_IFCHR    0020000
  30. #define    _S_IFIFO    0010000
  31. #define _SS_ISBLK    0060000
  32. #define _S_IFBLK    0060000
  33. #define _SS_ISREG    0100000
  34. #define    _S_IFREG    0100000
  35. #define _SS_ISFIFO    0010000
  36. #define    _S_IFLNK    0120000
  37. #define    _S_IFSOCK    0140000
  38.  
  39. #define _S_ISDIR(m)    ((m & _S_IFMT) == _SS_ISDIR)
  40. #define _S_ISCHR(m)    ((m & _S_IFMT) == _SS_ISCHR)
  41. #define _S_ISBLK(m)    ((m & _S_IFMT) == _SS_ISBLK)
  42. #define _S_ISREG(m)    ((m & _S_IFMT) == _SS_ISREG)
  43. #define _S_ISFIFO(m)((m & _S_IFMT) == _SS_ISFIFO)
  44. #define _S_ISLNK(m)    ((m & _S_IFMT) == _S_IFLNK)
  45. #define _S_ISSOCK(m)((m & _S_IFMT) == _S_IFSOCK)
  46.  
  47.  
  48. /* EXTENSIONS FOR DOS FORMAT FILES xmode */
  49. #define _SS_RO         0x0001
  50. #define _SS_HIDE     0x0002
  51. #define _SS_SYST     0x0004
  52. #define _SS_LABL     0x0008
  53. #define _SS_SUBD     0x0010
  54. #define _SS_ARCH     0x0020
  55.  
  56. #define _S_ISRO(x)        (x & _SS_RO)
  57. #define _S_ISHIDE(x)    (x & _SS_HIDE)
  58. #define _S_ISSYST(x)    (x & _SS_SYST)
  59. #define _S_ISLABL(x)    (x & _SS_LABL)
  60. #define _S_ISSUBD(x)    (x & _SS_SUBD)
  61. #define _S_ISARCH(x)    (x & _SS_ARCH)
  62.  
  63. #endif /* __MODEBITS__ */
  64.  
  65. typedef struct
  66.     {
  67.         unsigned short cnt;
  68.         unsigned long block;
  69.     } STCHUNK;
  70.  
  71. typedef struct xstat
  72.     {
  73.         unsigned short    st_dev;            /* Logical device 0=a, 1=b etc. */
  74.         unsigned short    st_ino;            /* Unique identifier */
  75.         unsigned short    st_mode;        /* Unix style mode bits */
  76.         unsigned short    st_nlink;
  77.         unsigned short    st_uid;
  78.         unsigned short    st_gid;
  79.         unsigned short    st_rdev;        /* Raw device number */
  80.         long            st_size;        /* EOF mark in file */
  81.         unsigned long    st_atime;
  82.         unsigned long    st_mtime;
  83.         unsigned long    st_ctime;
  84.         unsigned short    st_xmode;        /* PCDOS attribute bits */
  85.         char            st_sname[14];    /* short name */
  86.         unsigned short    st_fattype;        /* see definitions */
  87.         unsigned short    st_blksize;        /* Size in bytes of a block */
  88.         unsigned long    st_blocks;        /* Number of blocks allocated to file */
  89.         unsigned short    st_chunkcnt;    /* # of chunks allocated to file */
  90.         STCHUNK            st_chunklist[1];/* Array usable for access with
  91.                                             x_abs_read(), x_abs_write() */
  92.     } _XSTAT;
  93.  
  94. /* st_fattype definitions */
  95. #define NOFAT 0
  96. #define BIT32 32
  97. #define BIT24 24
  98. #define BIT16 16
  99. #define BIT12 12
  100.  
  101. extern _XSTAT _far * _far xxstat(char _far *path);
  102. extern int _far xstat(char _far *path, _XSTAT _far *statbuf);
  103. extern int _far xfstat(int fd, _XSTAT _far *statbuf);
  104. extern void _far xstat_free(void _far *statbuf);
  105. extern int _far x_abs_read(int dev, unsigned long blk, unsigned short blkcnt, 
  106.                             void _far *buf);
  107. extern int _far x_abs_write(int dev, unsigned long blk, unsigned short blkcnt,
  108.                             void _far *buf);
  109.  
  110. #endif    /*__XSTAT_*/
  111.